﻿using System;
using Microsoft.Xna.Framework.Input;

namespace NapazEngine.Utilities.Data
{
    public class Defaults
    {
        //game settings
        public const String GAME_NAME = "Napaz";

        //camera settings
        public const float DEFAULT_FIELD_OF_VIEW = 90.0f;
        public const float DEFAULT_ASPECT_RATIO = 16 / 9;
        public const float DEFAULT_NEAR_PLANE = 0.5f;
        public const float DEFAULT_FAR_PLANE = 50000f;


        //graphics settings
        public const bool DEFAULT_FULLSCREEN = false;
        public const float DEFAULT_WINDOW_WIDTH = 1280;
        public const float DEFAULT_WINDOW_HEIGHT = 720;

        public const bool DEFAULT_SYNCHRONIZE_WITH_VERTICAL_RETRACE = false;
        public const bool DEFAULT_PREFER_MULTI_SAMPLING = false;

        //misc graphics settings
        public const bool DEFAULT_DRAW_HITBOXES = false;
        public const bool DEFAULT_WIREFRAME_MODE = false;


        //game update settings
        public const bool IS_FIXED_TIME_STEP = false;
        public const int UPDATES_PER_SECOND = 60;


        //UI Background settings
        public const int DEFAULT_UI_BACKGROUND_COLOR_R = 0; //sky blue 0 191 255 
        public const int DEFAULT_UI_BACKGROUND_COLOR_G = 0; //0 200 255
        public const int DEFAULT_UI_BACKGROUND_COLOR_B = 0;


        //UI TextButton settings
        public const int DEFAULT_TEXT_BUTTON_COLOR_R = 255; //black
        public const int DEFAULT_TEXT_BUTTON_COLOR_G = 255;
        public const int DEFAULT_TEXT_BUTTON_COLOR_B = 255;
        public const int DEFAULT_TEXT_BUTTON_HOVER_COLOR_R = 100; //Gray
        public const int DEFAULT_TEXT_BUTTON_HOVER_COLOR_G = 100;
        public const int DEFAULT_TEXT_BUTTON_HOVER_COLOR_B = 100;


        //UI TextLabel settings
        public const int DEFAULT_TEXT_LABEL_COLOR_R = 255; //Black
        public const int DEFAULT_TEXT_LABEL_COLOR_G = 255;
        public const int DEFAULT_TEXT_LABEL_COLOR_B = 255;

        public const int DEFAULT_DROPSHADOW_COLOR_R = 100; //Gray
        public const int DEFAULT_DROPSHADOW_COLOR_G = 100;
        public const int DEFAULT_DROPSHADOW_COLOR_B = 100;

        //Log Settings
        public const bool DEFAULT_PRINT_LOG = false;

        //Opening Screen Settings
        public const float DEFAULT_OPENING_SCREEN_TIME = 5.0f; //in seconds

        //Controls defaults (move keys = 2d, turn+forward/backward = 3d)
        public const Keys DEFAULT_FORWARD_KEY = Keys.W;
        public const Keys DEFAULT_BACKWARD_KEY = Keys.S;
        public const Keys DEFAULT_TURN_LEFT_KEY = Keys.A;
        public const Keys DEFAULT_TURN_RIGHT_KEY = Keys.D;
        public const Keys DEFAULT_MOVE_UP_KEY = Keys.Up;
        public const Keys DEFAULT_MOVE_DOWN_KEY = Keys.Down;
        public const Keys DEFAULT_MOVE_LEFT_KEY = Keys.Left;
        public const Keys DEFAULT_MOVE_RIGHT_KEY = Keys.Right;

        public const Keys DEFAULT_JUMP_KEY = Keys.Space;
        public const Keys DEFAULT_SHOOT_KEY = Keys.RightControl;
        public const Keys DEFAULT_QUIT_KEY = Keys.Escape;


        //Mouse Settings
        public const bool DEFAULT_MOUSE_INVERTED = true;
        public const float DEFAULT_MOUSE_SENSITIVITY = 1.0f;
        public const float DEFAULT_MOUSE_SENSITIVITY_HORIZONTAL = DEFAULT_MOUSE_SENSITIVITY;
        public const float DEFAULT_MOUSE_SENSITIVITY_VERTICAL = DEFAULT_MOUSE_SENSITIVITY;
    }
}
